<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Monkey PHP Framework</title>
<link type="text/css" href="statics/css/base.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/jquery.min.js"></script>
<!--prettify-->
<link type="text/css" href="statics/css/prettify.css" rel="stylesheet" />
<script type="text/javascript" src="statics/js/prettify.js"></script>
<script type="text/javascript" src="statics/js/html5.js"></script>
<script type="text/javascript" src="statics/js/monkey.js"></script>
</head>

<body>
<!--page_wrap:start-->
<div class="page_wrap">

<p>
<h2>1.8  控制器</h2>
<br />
控制器是 MVC 模式中的核心关键层，一个程序可以没有模型，也可以没有视图，但是控制器是必须有的。使用 MonkeyPHP 的控制器类需要遵以下几点。<br /><br />

<b>文件位置规范</b><br />
必须放在系统\Controller目录中。<br /><br />

<b>文件名规范</b><br />
控制器名.php<br />
例如 Index 控制器的文件名是Index.php<br /><br />

<b>控制器类的类名规范</b><br />
控制器名<br />
例如 Index 控制器的类名是Index<br /><br />

<b>控制器类的接口规范：</b><br />
必须实现路由方案中指定的接口\Monkey\Controller\_Interface。<br />
接口的源码是：<br />
<pre class="prettyprint linenums">
interface \Monkey\Controller\_Interface{
    public function bootup($action,$params);
}
</pre>

因此，你的控制器必须实现这个接口，如：<br />

<pre class="prettyprint linenums">
class Example implements \Monkey\Controller\_Interface
{
    public function bootup($action,$params){
        //这里可以方便的加入前置操作
        if(method_exists($this,$action)){
            //这里可以加入特殊操作
            $this->$action($params);
        }else{
            //这里可以加入finally操作
            $this->hello();
        }
        //这里可以方便的加入后置操作
    }
    public function hello($params=null){
        !$params and $params='World';
        echo 'Hello ', $params, ' !';
    }
}
</pre>

<b>关于控制器的疑问：</b><br />
MonkeyPHP 的控制器没有直接执行相应的控制器方法，是为更安全、灵活的使用控制器。如上例所示，bootup中可以更丰富细腻的控制处理过程。

</p>

</div>
<!--page_wrap:end-->
</body>
</html>